package zz.filter;

import zz.Dao.UserDao;
import zz.javabean.User;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

public class LoginFilter implements Filter {
    private String[] paths;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }


    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //处理的是Http请求所以强转
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
        //如果用户登录过，那么session中被会加上一个特定的标识属性
        HttpSession session = httpServletRequest.getSession();

//        String username = servletRequest.getParameter("username");
//        String password = servletRequest.getParameter("password");
//        UserDao userDao = new UserDao();
//        User user = userDao.findUser(username);
//
//
//        //将用户名放入session    并且设置名称为uname(在过滤器中获取时，直接获取uname)
//        if (user.getUsername()==username && user.getPassword()==password) {
//            session.setAttribute("success", username);
//            filterChain.doFilter(servletRequest,servletResponse);
//        }
        //看看是否能查找到这个属性
        Object User = session.getAttribute("success");

        //如果没找到说明这个访问者没有登录过这个网页
        if(User != null){
            //如果找到了说明这个用户登陆过就继续下一个Filter，没有Filter就打开主页面了
            filterChain.doFilter(servletRequest,servletResponse);

        }else {
            //直接请求转发到一个写好的错误页面上，尽量保持地址栏的URL不变
            servletRequest.getRequestDispatcher("login.jsp").forward(servletRequest,servletResponse);
        }

//
//        String username = servletRequest.getParameter("username");
//        String password = servletRequest.getParameter("password");
//        UserDao userDao = new UserDao();
//        User user = userDao.findUser(username);
//
//
//        //将用户名放入session    并且设置名称为uname(在过滤器中获取时，直接获取uname)
//        if (user.getUsername()==username && user.getPassword()==password) {
//            session.setAttribute("uname", username);
//            filterChain.doFilter(servletRequest,servletResponse);
//        }
//        //如果没找到说明这个访问者没有登录过这个网页
//        if(session.getAttribute("uname") == null){
//            //直接请求转发到一个写好的错误页面上，尽量保持地址栏的URL不变
//            servletRequest.getRequestDispatcher("login.jsp").forward(servletRequest,servletResponse);
//        }else {
//            //如果找到了说明这个用户登陆过就继续下一个Filter，没有Filter就打开主页面了
//            filterChain.doFilter(servletRequest,servletResponse);
//        }


//        //获取资源URI路径
//        String path = ((HttpServletRequest) servletRequest).getServletPath();
//
//        for (int i = 0; i < paths.length; i++) {
//            //如果当前请求的URI路径是要放行的资源中的一个，放行
//            if (path.startsWith(paths[i])) {
//                filterChain.doFilter(servletRequest, servletResponse);
//                return;//放行之后返回，避免程序继续执行，往下面执行是拦截的代码
//            }
//
//        }
//        //判断用户是否已经登录，如果登录则放行资源，否则重定向到登录界面
//        String name = (String) ((HttpServletRequest) servletRequest).getSession().getAttribute("name");
//        //如果name为空，则证明用户没有登录过，跳转到登录界面
//        if (name==null) {
//            ((HttpServletRequest) servletRequest).getSession().setAttribute("error", "尚未登录，请登录");
//            servletRequest.getRequestDispatcher("login.jsp").forward(servletRequest,servletResponse);
//            return;
//
//        }
//        //剩下的情况为已登录，放行
//        filterChain.doFilter(servletRequest, servletResponse);
        //设定session的有效期
//        session.setMaxInactiveInterval(10);

        //将获取的用户名和密码打印在页面上
//        servletResponse.getWriter().print("用户名："+username);
//        servletResponse.getWriter().print("<br/>");
//        servletResponse.getWriter().print("密码："+password);


    }


    @Override
    public void destroy() {

    }
}
